Java Software Resources
Databases that Support a Java Software Interface
There are a variety of database options available:
-
Oracle. I mention Oracle because it is, after all, the leading
database. Oracle is free for software development, but deployment
and commercial use requires a license and Oracle licenses are
relatively expensive.
-
For enterprise database support PostgreSQL provides an open
source alternative to Oracle that is easier to install, easier to
maintain and which provides very competitive performance.
- pgAdmin is an open source PostgreSQL database administration tool.
-
Apache Derby This
database started its life as IBM's Cloudscape database. Derby is
one of the most popular Java/embedded database systems, with a
large user community. Derby is ACID compliant (which means that
it's transaction safe). I am probably going to integrate Derby
with the Trade Engine to track transactions.
-
db40 is an object relational
database. This database does not directly support SQL (since it
uses objects, rather than tables). I've never drunk the object
database Koolaid so I mention this database only in passing. I
don't foresee ever using it.
JavaScript,
Ajax and Data Visualization
Implementing the Web Browser based GUI for an intra-day market trading system written
in Java has really demonstrated to me that Web based applications may have a server side
core, but the client, Web browser side, is critical as well. Or at
least critical if you want good user interaction. HTML forms provide
at best a primitive user interface with awkward interactivity in many cases.
This page provides links to a variety of JavaScript/Ajax client side
resources that can be used to build "Rich Internet Applications".
JavaScript is a historical accident in many ways. The JavaScript
language is an interesting language in its own right and is much more
powerful and complicated than a simple scripting languages like Php.
JavaScript was designed to run within a web browser, but it was not
released with support classes and methods for client/server
interaction.
Ajax evolved to provide this client/server interaction. Ajax is a
label that has been attached to a set of techniques for interaction
between the client Web browser and the server. The methodology that
makes up Ajax evolved and some of the techniques, like Ajax hidden
frames, are overly complex and awkward. Frameworks that can hide this
awkwardness are particularly important.
The resources listed below target standard browsers like Firefox or
(the horror) Microsoft's Internet Explorer. The platform that I have
in mind has a Java Servlet engine (Tomcat) supporting the application
and it would be possible to use a custom browser like Lobo, which supports the Java Swing
GUI and Sun's JavaFX within the browser. However, this introduces yet
another component to configure. Also, Lobo is experimental at the
time this was written. Lobo is unlikely to become a browser standard
because it would to be adopted by both Mozialla and Microsoft.
Microsoft has the Silverlight framework
that they are pushing, so it seems unlikely that this will happen.
As the list below shows, there's a staggering number of
JavaScript/Ajax frameworks, all claiming to be the answer to your Ajax
problems. Several of the open source frameworks are supported by commercial
entities with business models that are not obvious to me. It would be
best to avoid adopting a framework that became an orphan.
-
Ajax Frameworks and Ajax Support
-
ExtJS
The ExtJS JavaScript/AJAX software has been used very
successfully by one of the internal LLNL GUI projects. ExtJS
can be used to build very attractive, very fast Web based GUIs
systems. The software is platform independent, which is not
clear from their web site.
-
ExtGWT (for the Google Web Tool API)
This is a Google Web Toolkit wrapper from the ExtJS people.
However, ExtJS may be a better choice, since there is a huge
collection of widgets and examples.
- Designing Rich AJAX Web Interfaces With ZK
ZK allows AJAX client and
Servlet side interfaces to be created using XML and Java,
which is presumably translated into JavaScript on the client
side and Java on the Server (Servlet side). There is a nice
set of demo applications, including one where radio buttons
can be clicked on which immediately cause the web page to
change. The software seems to be both professional and free,
so I'm not sure what their business model is.
-
Bindows
This is a commercial JavaScript package that is reasonably
priced and has a lot of interesting "widgets" including a
charting widget that runs on the client (e.g., the browser),
offloading the processing needed for graphics display to the
client.
- Google Software
Google apparently pioneered the initial Ajax technology in Web
sites like Google Earth and GMail.
- Yahoo Software
-
Appcelerator: Open
Source Rich Internet Applications. Apparently there is an
Eclipse plugin that helps develop Appcelerator applications.
Since this is yet another open source JavaScript/Ajax company,
I don't know what their business model is.
-
OpenLaszio.
According to the web site: the only run-anywhere, no-lock-in
rich internet platoform. There's even a book, Laszlo in
Action which is the definitive guide to Open Laszlo.
Frameworks like OpenLaszio seem to be geared toward a Web
browser based application. In such an application, the back
end serves only as a database from which to fetch and update
data.
In contrast, a market trading application has a large body of
software (thousands of lines of multi-threaded Java code)
running as a Servlet. The Web brower simply serves and a
control front end.
Laszlo is a Servlet which supports the brower interaction.
It's not clear that it would be easy or even possible to build
a complex application that simply used Laszlo as a front end.
Finally, one problem is that Laszlo seems to use Flash, which
doesn't work terribly well on Linux.
-
Ajax Infrastructure
-
JSON Java object format
Historically, Ajax uses XML to communicate between the client
and the server. JSON is an object format that can be used
instead of XML.
-
Apache JetSpeed
JetSpeed supports portal implementation. A portal provides a
common and updating view of a set of data to multiple viewers
using Web browsers (or even cell phones). This may be a way
to build a Web browser based GUI for a market trading system where multiple
browsers need the same, consistent, view of the trading system state.
-
jMaki
This site
publishes JavaScript and Servlet software that can be used to
build connectors between different Java script applications
and provide update to distributed Web browser clients.
-
JavaScript Infrastructure
-
Prototype
Prototype JavaScript Framework is a JavaScript extension that
provides utilities to compensate for the shortcomings of
JavaScript.
- Dojo
According to Wikipedia(ATW):
"The Dojo Toolkit is a modular open source JavaScript toolkit
(or library), designed to ease the rapid development of
JavaScript or Ajax based applications and web sites." Feature
set includes charting..
more info.
-
XMLHttpRequest
underlies Ajax which build on the standard POST and GET HTTP
requests.
-
Getting
Started with Ajax by A
list Apart
A list apart is a popular,
W3C-respecting web developer site for more high-brow
web-devs..
-
Charting in Java and Javascript
-
Other JavaScrip and Data Visualization Resources
- Max Kiesler Web Visualization
- Firebug: a firefox web page development plug-in.
- Processing
According to the web page:
Processing is an open source programming language and
environment for people who want to program images, animation,
and interactions. It is used by students, artists, designers,
researchers, and hobbyists for learning, prototyping, and
production. It is created to teach fundamentals of computer
programming within a visual context and to serve as a software
sketchbook and professional production tool. Processing is
developed by artists and designers as an alternative to
proprietary software tools in the same domain.
Java Development and Build
- YourKit
Yes, Virgina, Java does have memory leaks.
Although Java's dynamic allocation and garbage collection avoids
many of the memory problems found in C++, a Java program can still
have memory leaks. A project I worked on had a particularly nasty
one. We finally found it using YourKit.
- Artifactory
Artifactory is a Maven 2 enterprise repository. It offers advanced
proxying, caching and security facilities to provide a robust,
reproducible and independent build environment when using
Maven. Artifactory is being used by clients ranging from small
startup teams to international corporate teams employing distributed
development, thus improving the development experience for tens of
thousands of developers. Artifactory exposes a robust artifacts
management platform using rich Ajax web UI and can be run
out-of-the-box with a simple "unzip and launch".
Acknowledgments
Thanks go to Sebastian Thomas, who contributed to this web page.